package solution.liuyu2783.offer;

import solution.liuyu2783.common.ListNode;

import java.util.ArrayList;

/**
 * 剑指 Offer 06. 从尾到头打印链表
 * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
 */
public class Q06_ReverseLink_E {

	/**
     * 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。
     */
    public static void main(String[] args) {
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(3);
        node1.next = node2;
        node2.next = node3;
        ArrayList arrayList = Q06_ReverseLink_E.reversePrint(node1);
        arrayList.stream().forEach((a)->{
            System.out.println(a);
        });
    }

    //头插法
    public static ArrayList reversePrint(ListNode head){
    	ListNode root = new ListNode(-1);
    	while(head != null) {
    		ListNode temp = head.next;
    		head.next = root.next;
    		root.next = head;
    		head = temp;
    	}
    	
    	// 返回值
        ArrayList<Integer> result = new ArrayList<>();
        root = root.next;
        while(root != null) {
        	result.add(root.val);
        	root = root.next;
        }
    	return result;
    }

}
